In recent times the number of software applications that are readily available to a user of an electronic device has vastly increased. High speed internet connections allow users to download and install new applications in a matter of seconds, leading to the typical user having many applications installed on a single electronic device. Here the term electronic device may include personal and laptop computers, tablet computers, notebook computers, mobile telephones, PDA's, e-book readers and the like.
Furthermore, the steady improvement of inter alia processing power and memory capacity on such electronic devices has led to these devices being able to run many applications simultaneously without encountering significant performance issues. Thus, users of such devices regularly have many applications running in parallel.
Each application typically presents the user with a user interface, often in the form of a graphical user interface (GUI), to allow the user to interact with the application. The GUI is displayed on the screen of the device and the user may interact with it via one or more input devices, such as a mouse, keyboard or touchpad. In some cases the screen itself doubles as an input device, with such a screen being known as a touchscreen.
Often a GUI for a given application will include one or more GUI windows that are displayed to the user on the screen of the electronic device. These GUI windows display information or ‘content’ to the user, such as the text and images of a typical web page in the case of an internet browser or a text document in the case of a word processing application. A GUI window may also include one or more controls that allow the user to control and interact with the application that the GUI window belongs to. Examples of controls include buttons, menus, text entry fields, checkboxes, radio buttons and lists.
In the case where many applications having at least one GUI window are running on an electronic device, it readily becomes apparent that these GUI windows have competing requirements for allocation of screen real estate on the screen of the device. Typically, each application will benefit from having as much screen real estate allocated to it as possible.
Various methods of arranging GUI windows on an electronic device to facilitate screen real estate sharing are known. These known methods are based around positioning and/or resizing one or more GUI windows such that a number of GUI windows can be positioned on the screen of the electronic device in a way that shares screen real estate between them.
One way in which screen real estate may be shared between running applications is to ‘tile’ the GUI windows, such that each GUI window is allotted a portion of the screen within which to display its content to the user. In this approach GUI windows typically border one another, but do not overlap. This type of arrangement allows the user to view many GUI windows simultaneously but often forces a GUI window to shrink to a size at which the content it is displaying is cropped and/or difficult for the user to read and interact with effectively.
Typically the position and size of each GUI window in a tiling system is automatically chosen by the electronic device itself, which may result in a GUI window arrangement that is counterintuitive or that does not suit the current needs of the user. The user may then be required to manually alter the tiling arrangement to better suit their needs, requiring additional time and effort on their part.
Another way in which screen real estate may be shared between running applications is to ‘stack’ their GUI windows. In this approach GUI windows are allowed to overlap and thus at least partially obscure one another, with the user having the ability to move and/or resize each GUI window relative to the others and taking account of the physical extents of the screen, according to their current viewing preference. In the extreme case the user may choose to ‘maximise’ one GUI window such that it occupies substantially all of the screen of the electronic device, at the expense of being able to view and interact with all of the other GUI windows. The user may also choose to ‘minimize’ a GUI window, such that it is not displayed anywhere on the screen, in order to gain screen real estate for allocation to another GUI window.
In order to make effective use of either the ‘stacking’ or ‘tiling’ approach the user is required to invest time and thought into arranging their current GUI windows. Typically GUI windows are rearranged via input from a human input device, which may be slow due to the number of steps involved. For example, the user may need to manually resize a GUI window via a series of mouse clicks, reposition the GUI window relative to the physical extents of the display device via a mouse ‘click and drag’ operation, and then scroll around in the GUI window to ensure the content they wish to view is displayed as fully as possible.
In many cases, when a GUI window of an application is resized the application redraws the content in the GUI window based on assumptions about how best to display its content in the newly sized GUI window. This may involve clipping the content, so that the user must scroll around inside the GUI window to view different portions of the total content, or resizing the content, which may decrease its readability or cause the user to have to be inordinately precise with a human input device in order to interact correctly with the application.
Thus, known GUI window arrangement methods suffer the drawback of a relatively complex sequence of steps being required for the user to view and interact with the content of each GUI window, as well as making the content less readable to the user and making the application more difficult to control and interact with.
Of course, the amount of available screen real estate may be increased by providing one or more additional displays for the electronic device to use. However, in many cases this is undesirable or even unfeasible due to the increased cost and complexity associated with providing additional displays, as well as the reduction in portability that this causes.
Therefore, there is a need in the art to address the aforementioned problem.